package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import model.Advertentie;
import model.CiiBay;

/**
 * Paneel voor zoekresultaten
 * @author Jaap
 *
 */
@SuppressWarnings("serial")
public class ZoekResultaatPaneel extends JPanel implements Observer {
	private CiiBay ciiBay;
	private JPanel resultaten;
	private JScrollPane scroll;
	
	public ZoekResultaatPaneel(CiiBay ciiBay){
		setBackground(Color.ORANGE);
		this.ciiBay = ciiBay;
		ciiBay.addObserver(this);
		setLayout(new BorderLayout());
		resultaten = new ResultaatPaneel();
		scroll = new JScrollPane(resultaten,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		add(scroll, BorderLayout.CENTER);
		scroll.getVerticalScrollBar().setUnitIncrement(12);
		scroll.setBorder(null);
	}
	/**
	 * Update het paneel met de juiste zoekresultaten.
	 * Zorgt ervoor dat elk resultaat onder de vorige wordt gezet.
	 * @author Jaap
	 */
	@Override
	public void update(Observable arg0, Object arg1) {
		scroll.remove(resultaten);
		scroll.setViewportView(resultaten);
		revalidate();
	}
	
	class ResultaatPaneel extends JPanel implements Observer{
		/**
		 * Het paneel dat alle zoekresultaten bevat
		 * @author Jaap
		 */
		public ResultaatPaneel(){
			this.setBackground(Color.ORANGE);
			this.setLayout(new GridBagLayout());
			ciiBay.addObserver(this);
		}
		/**
		 * Update het paneel met de nieuwe zoekresultaten
		 * @author Jaap
		 */
		@Override
		public void update(Observable arg0, Object arg1) {
			String message = (String) arg1;
			if(message.equals("zoekresultaten")){
				removeAll();
				ArrayList<Advertentie> resultaten = ciiBay.getZoekResultaten();
				GridBagConstraints c = new GridBagConstraints();
				int y = 0;
				c.gridx = 0;
				c.anchor = GridBagConstraints.NORTHWEST;
				c.fill = GridBagConstraints.BOTH;
				c.insets = new Insets(0,0,5,0);
				for(Advertentie a : resultaten){
					c.gridy = y;
					this.add(new EnkelZoekResultaat(a, ciiBay),c);
					y++;
				}
				if(resultaten.size() == 0){
					c.gridy = y;
					this.add(new JLabel("Er zijn geen zoekresultaten!"),c);
				}
			}
			
		}
	}
	
}
